# -*- coding: utf-8 -*-
# @Time    : 2022/1/25 12:14
# @Author  : Mr.Ye
# @Email   : a3289748713@163.com
# @File    : test.py
# @Software: PyCharm

# from flask import Flask
# from flask_sqlalchemy import SQLAlchemy
# import os
from datetime import datetime
from test2 import db



class Role(db.Model):
    __tablename__ = "my_table"  # 写表名
    id = db.Column(db.INTEGER, primary_key=True)  # 这行不能删
    name = db.Column(db.String(10), nullable=False)  # 这行也是


class Role1(db.Model):
    __tablename__ = "role"

    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 名称
    auths = db.Column(db.String(600))  # 角色权限列表
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    admins = db.relationship('Admin', backref='role')  # 管理员外键关系关联

    def __repr__(self):
        return "<Role %r>" % self.name


class Admin(db.Model):
    __tablename__ = "admin"

    id = db.Column(db.Integer, primary_key=True)  # 编号
    name = db.Column(db.String(100), unique=True)  # 名称
    pwd = db.Column(db.String(100))  # 管理员密码
    is_super = db.Column(db.SmallInteger)  # 是否为超级管理员 0为超级管理员
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'))  # 所属角色
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 添加时间
    adminlogs = db.relationship('Adminlog', backref='admin')  # 管理员登录日志外键关系关联
    oplogs = db.relationship('Oplog', backref='admin')  # 管理员操作日志外键关系关联

    def __repr__(self):
        return "<Admin %r>" % self.name

    def check_pwd(self, pwd):
        # 使用Hash来存储密码
        from werkzeug.security import check_password_hash

        return check_password_hash(self.pwd, pwd)


# 管理员登录日志
class Adminlog(db.Model):
    __tablename__ = "adminlog"

    id = db.Column(db.Integer, primary_key=True)  # 编号
    admin_id = db.Column(db.Integer, db.ForeignKey('admin.id'))  # 所属管理员
    ip = db.Column(db.String(100))  # 登录IP
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 登录时间

    def __repr__(self):
        return "<Adminlog %r>" % self.id


# 操作日志
class Oplog(db.Model):
    __tablename__ = "oplog"

    id = db.Column(db.Integer, primary_key=True)  # 编号
    admin_id = db.Column(db.Integer, db.ForeignKey('admin.id'))  # 所属管理员
    ip = db.Column(db.String(100))  # 登录IP
    reason = db.Column(db.String(600))  # 操作原因
    addtime = db.Column(db.DateTime, index=True, default=datetime.now)  # 登录时间

    def __repr__(self):
        return "<Oplog %r>" % self.id


# @app.route("/")
# def index():
#     r1 = Role(name="用户1")
#     db.session.add(r1)
#     db.session.commit()  # flask默认使用事务，所以每一次操作都要提交事务
#
#     r2 = Role(name="用户2")
#     r3 = Role(name="用户3")
#     r4 = Role(name="用户4")
#     db.session.add_all([r2, r3, r4])  # 多行时可以用session.add_all([x,x,x])
#     db.session.commit()
#     return "hello"


if __name__ == '__main__':
    db.create_all()
    # r1 = Role(name="用户1")
    # db.session.add(r1)
    # db.session.commit()  # flask默认使用事务，所以每一次操作都要提交事务
    #
    # r2 = Role(name="用户2")
    # r3 = Role(name="用户3")
    # r4 = Role(name="用户4")
    # db.session.add_all([r2, r3, r4])  # 多行时可以用session.add_all([x,x,x])
    # db.session.commit()
